今回から「C++98プログラマーのためのC99入門」の連載を始めます。C言語にはいくつかのバージョンがありますが、本編で扱っているのはそのうちのC90です。この連載では、C言語の第2版にあたる規格であるC99を扱うことにします。(ちょっと使いにくいですが)コメントやメール、Twitterで質問や感想をお寄せいただければ、何らかの形でフィードバックしたいと思いますので、よろしくお願いします。
C99について
C言語の歴史は古く、標準規格に限ってもいくつかのバージョンがありますが、この番外編では、第2版にあたるC99を対象にします。C言語のバージョンについての詳細な情報は、当サイトの別の記事である「C言語再入門」の第1回 C言語とはを参照してください。
C++における標準Cライブラリは、C95をベースにしています。C99では、C95のライブラリを完全に包含し、さらに数学関係を中心に大幅にライブラリが拡張されています。C99で追加されたライブラリの多くは、TR1やC++11でC++にも取り込まれることになりました。しかし、複素数関係など、一部のライブラリに関しては、CとC++の間での互換性が完全に失われています。
一部の環境ではC99はなかなか対応が進みませんでしたが、PCをはじめ、組込み用途の処理系でも比較的C99に対応しているように思います。もちろん、C99に完全準拠しているかというと必ずしもそうではないのですが、実用上大きな問題になることは少ないでしょう。
どの環境を対象にするか
本連載では、特定の環境に依存するのではなく、可能なかぎり一般的な内容にしたいと思います。ただし、具体例を挙げるために必要な場合には、特定環境を取り上げる可能性はあります。その場合は、都度どんな環境を想定しているかを明記するようにします。
なお、特定の環境には依存しないといっても、フリースタンディング環境かホスト環境かは区別しなければなりません。フリースタンディング環境というのは、C++でいうところの「自立処理系」の環境であり、ホスト環境というのは、C++でいうところの「依存処理系」の環境のことです。本連載では、特に指定がない場合はホスト環境を想定します。フリースタンディング環境については、それを解説する回を設けたいと思います。